// index.js
Page({
	/** 保存当前页面所需要的变量 */
	data: {
		cityname: '未选择',  // 绑定左上角城市名
		movies: [], // 绑定显示的电影列表
		active: 1,  // 绑定当前选中的类别的ID
	},

	/** 点击顶部导航后触发 */
	tapNav(e){
		let id = e.target.dataset.id
		this.setData({ active:id })
		// 先去缓存中找找有没有存过相关数据
		// 如果存过直接用，如果没存过再发请求
		wx.getStorage({
			key: id,
			success: (data)=>{  // 如果存过直接用
				this.setData({movies: data.data})
			},
			fail:(err)=>{ // 如果没存过再发请求
				// 发请求，访问当前选中的类别首页电影列表
				this.loadMovies(id, 0).then(movies=>{
					this.setData({ movies })
					// 向缓存中存储这些数据
					wx.setStorage({
						key: id, 
						data: movies
					})
				})
			}
		})
	},

	/** 通过cid与offset 加载电影列表 返回Promise*/
	loadMovies(cid, offset){
		return new Promise((resolve, reject)=>{
			// 弹出Loading等待框 
			wx.showLoading({
				title: '加载中，请稍后',
				mask: true, // 是否显示透明蒙层
			})
			wx.request({
				url: 'https://api.tedu.cn/index.php',
				method: 'GET',
				data: {cid, offset},
				success: (res)=>{
					resolve(res.data)   // 返回给loadMovies的调用者
				},
				fail: (err)=>{
					reject(err)
				},
				complete: ()=>{ // 无论成功或失败都执行
					wx.hideLoading()
				}
			})	
		})
	},
	
	// 加载我的当前位置
	loadMyLocation(){
		// 加载访问腾讯位置服务的核心类 class
		let qqmapsdk = getApp().globalData.qqmapsdk
		qqmapsdk.reverseGeocoder({ 
			success: (res)=>{
				let city = res.result.address_component.city
				console.log('当前地址：', city)
				this.setData({cityname: city})
				// 将city存入globalData供其他页面访问
				getApp().globalData.cityname = city
			},
			fail: (err)=>{
				console.warn('当前地址加载失败', err)
			}
		}) 
	},

	/** 当页面加载时执行 */
	onLoad(){
		// 加载我的当前位置
		this.loadMyLocation()

		// 发送请求，加载热映类别首页电影列表
		this.loadMovies(1, 0).then(movies=>{
			// data就是promise对象中resolve方法传回来的数据
			this.setData({ movies })
		}).catch(err=>{
			console.warn('onLoad加载数据失败')
			this.setData({ 
				movies: [{
					id:1, 
					moviename:'如果声音不记得',
					movietype:'emo',
					score: 10.0,
					cover: '/images/303c2e671cc4df875c151d688ecbd8962085989@1l_1e_1c_128w_180h.jpg'
				},{
					id:2, 
					moviename:'赤狐书生',
					movietype:'狗血悬疑剧',
					score: 9.0,
					cover: '/images/303c2e671cc4df875c151d688ecbd8962085989@1l_1e_1c_128w_180h.jpg'
				}]
			})
		})
	},

	onShow(){
		console.log('回到了index，执行onshow....')
		let cityname = getApp().globalData.cityname
		console.log('读取到globalData中的cityname：'+cityname)
		this.setData({cityname})
		console.log('将cityname存入了data中，更新了左上角')
	},

	/** 当页面滚到底时执行该钩子方法 */
	onReachBottom(){
		console.log('到底了...')
		// 发送请求加载下一页数据
		// 观察，下一页数据offset参数应该传多少？
		// |movies个数   |下一页    |offset
		// |   20        |  2      | 20
		// |   40        |  3      | 40
		// |   60        |  4      | 60
		// |   80        |  5      | 80
		// |   n         |  ?      | n
		let cid = this.data.active // 类别ID
		let offset = this.data.movies.length
		this.loadMovies(cid, offset).then(movies=>{
			this.setData({
				movies: this.data.movies.concat(movies)
			})
		})
	},

	/** 监听页面下拉刷新操作 */
	onPullDownRefresh(){
		console.log('下拉刷新...')
		// 发送https请求，加载当前类别的首页列表数据
		let id = this.data.active
		this.loadMovies(id, 0).then(movies=>{
			// 替换当前列表
			this.setData({ movies })
			// 重新更新缓存 
			wx.setStorage({
				key: id+"", // key必须是字符串类型
				data: movies
			})
			// 下拉刷新动画恢初始状态
			wx.stopPullDownRefresh()
		})
	}
})